#include <iostream>
using namespace std;

void swap1(int a, int b) // 传递形参，不会改变实参的值
{
    int temp = a;
    a = b;
    b = temp;
}

void swap2(int *a, int *b) // 传递地址，可以改变实参的值
{
    int temp = *a;
    *a = *b;
    *b = temp;
}

void swap3(int &a, int &b) // 传递引用，可以改变实参的值
{
    int temp = a;
    a = b;
    b = temp;
}

int main()
{
    int a = 10;
    int b = 20;

    // swap1(a, b); // 传递形参，不会改变实参的值

    // swap2(&a, &b); // 传递地址，可以改变实参的值

    swap3(a, b); // 传递引用，可以改变实参的值

    cout << a << endl;
    cout << b << endl;
}